package com.oa.system.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.joneying.common.web.response.Resp;
import com.oa.core.PageResult;
import com.oa.core.exception.BusinessException;
import com.oa.core.exception.DataIsEmptyException;
import com.oa.system.dto.PostAddDTO;
import com.oa.system.dto.PostListDTO;
import com.oa.system.dto.PostUpdateDTO;
import com.oa.system.entity.Post;
import com.baomidou.mybatisplus.service.IService;
import com.oa.system.vo.PostListVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * <p>
 * 岗位表 服务类
 * </p>
 *
 * @author syb123
 * @since 2019-01-29
 */
public interface IPostService extends IService<Post> {

    /**
     * 新增岗位
     *
     * @param postAddDTO
     * @return
     */
    Resp addPost(PostAddDTO postAddDTO) throws BusinessException;

    /**
     * 根据条件查询岗位列表
     *
     * @param page
     * @param limit
     * @param postName
     * @return
     */
    PageResult<PostListVO> findPostListByCondition(Integer page, Integer limit, String postName) throws DataIsEmptyException;

    /**
     * 根据岗位主键id查询岗位详情
     *
     * @param id
     * @return
     */
    Resp findPostDetailsById(String id) throws DataIsEmptyException;

    /**
     * 根据岗位主键id编辑岗位
     *
     * @param postUpdateDTO
     * @return
     */
    Resp updatePostDetailsById(PostUpdateDTO postUpdateDTO) throws BusinessException;

    /**
     * 根据岗位主键id删除岗位
     *
     * @param id
     * @return
     */
    Resp deletePostDetailsById(String id) throws DataIsEmptyException, BusinessException;

    /**
     * 查询岗位列表
     * @param postListDTO PostListDTO
     * @return
     */
    PageResult<PostListVO> findPostList(PostListDTO<PostListVO> postListDTO);
}
